package cn.wolfcode.luowowo.redis.service;

import cn.wolfcode.luowowo.domain.UserInfo;

public interface IUserInfoRedisService {
    /**
     * 将手机号码和验证码保存进Redis中，key：前缀:phone value：verifycode
     * @param phone
     * @param code
     */
    void setVerifyCode(String phone, String code);

    /**
     * 根据拼出的key查询存好的验证码
     * @param key
     * @return
     */
    String getVerifycode(String key);

    /**
     * 保存登录后的用户信息，用于验证用户是否已经登录过
     * @param token
     * @param userInfo
     */
    void setToken(String token, UserInfo userInfo);

    /**
     * 存限制短信频率的次数
     * @param count
     */
    void setCount(String count, String phone, long time);

    /**
     * 保存新的count 替换原来的
     * @param
     */
    void ckeckSendCount(String phone);

    /**
     * 拿到操作次数
     * @return
     */
    Long getCount(String phone);

    /**
     * 可操作数减1
     */
    void decrementCount(String phone);

    /**
     * 获得过期时间
     * @param phone
     * @return
     */
    Long getExpireSeconds(String phone);

    /**
     * 判断key是否存在
     * @param phone
     * @return
     */
    boolean hasKey(String phone);

    /**
     * 删除一个或多个key
     * @param phones
     */
    public void del(String ... phones);


    /**
     * 设置次数，根据新的次数覆盖原来的数据
     * @param newCount
     * @param phone
     */
    void setCount(String newCount, String phone);

    /**
     * 通过 token 查询用户的信息
     * @param token
     * @return
     */
    UserInfo getUserInfoByToken(String token);

    /**
     * 删除验证频率的kv对
     * @param phone
     */
    void deleteCount(String phone);
}
